SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[SP_TTPAGO_MASI_I04]  
/*-------------------------------------------------------*/        
/*---Empresa              : OFISIS S.A.                --*/        
/*---Cliente              : OFISIS                     --*/        
/*---Sistema              : Tesoreria                  --*/        
/*---Mcdulo               : Empresa                    --*/        
/*---Programa             : Grabacicn Cabecera         --*/        
/*---                       Movimiento Bancos (Egresos)--*/        
/*---Script               : tcmovi_b.sql               --*/        
/*---Nombre SP            : SP_TTPAGO_MASI_I04         --*/        
/*---Desarrollado por     : Denis Villacr's P.         --*/        
/*---Fecha Creacicn       : 06/01/2004                 --*/        
/*---Base Datos           : Microsoft Sql Server       --*/        
/*---Versicn              : 2005                       --*/        
/*---Invoca a SP          :                            --*/        
/*-------------------------------------------------------*/        
/*-------------------------------------------------------*/          
/*---Modificado 1 por     : Carlos Marquez Escobar  --*/          
/*---Fecha Modificaci©n   : 01/09/2006                  --*/           
/*---Detalle Modificaci©n : Se adiciono Campo Conciliac­on--*/    
/*-------------------------------------------------------*/        
/*---Comentarios: Para el Caso de Detracciones         --*/        
/*---                                                  --*/        
/*---                                                  --*/        
/*-------------------------------------------------------*/        
/*-------------------------------------------------------*/        
/*---Drop Proc SP_TTPAGO_MASI_I04                      --*/        
/*---Grant all on SP_TTPAGO_MASI_I04 to public         --*/         
/*---SP_TTPAGO_MASI_I04                                --*/        
/*-------------------------------------------------------*/        
 @ISCO_EMPR   TD_VC_002,  
 @ISCO_USUA_MODI TD_VC_008_USUA,  
 @ISCO_BANC   TD_VC_003,  
 @ISNU_CNTA_BANC TD_VC_020,  
 @ISAA_BNCO   TD_VC_004,  
 @ISMM_BNCO   TD_VC_002,  
 @ISTI_MOVI_BANC TD_VC_001,  
 @ISNU_COMP_BANC TD_VC_008,  
 @IDFE_OPER   TD_DT_001,  
 @ISCO_TIPO_OPER TD_VC_003,  
 @INFA_TIPO_CAMB TD_NU_015_006,  
 @INIM_MOVI   TD_NU_016_004,  
 @ISSI_SOLO_BANC TD_VC_001_SINO,  
 @ISTI_CORR_INEG TD_VC_001,  
 @INUL_CORR_EGRE TD_IN_001,  
 @INUL_CORR_INEG TD_IN_001,  
 @ISCO_ENTR_REND TD_VC_003,  
 @ISCO_UNID_CNTB TD_VC_003,  
 @ISCO_GRUP_CONC TD_VC_020, ---Nuevo campo  
 @ISNU_SOLI   TD_VC_010,  
 @ISCO_SUBR   TD_VC_003,  
 @ISTI_ENTI         TD_VC_001,  
 @ISCO_ENTI         TD_VC_020,  
 @ISDE_NOMB_ORDE    TD_VC_100,  
 @ISCO_TIPO_DOCU TD_VC_003,  
 @ISNU_DOCU_BANC TD_VC_020,  
 @ISNU_CHEQ   TD_VC_020,  
 @ISST_ASTO_RESU TD_VC_001,  
 @ISST_PAGO_DETR TD_VC_001  
 As  
Declare        
   @VNCO_NUEV_NUME TD_IN_001,         
   @VSCO_NUEV_CHAR TD_VC_008,        
   @VNNU_REGI      TD_IN_001,        
   @VNUL_CORR_EGRE TD_IN_001,        
   @VNUL_CORR_AJUS TD_IN_001,         
   @VSST_INTE_BACH TD_VC_001,        
   @VSTI_OPNI_CARG TD_VC_003,        
   @VSTI_OPNI_ABON TD_VC_003,         
   @OSTI_DOCU_CHEQ TD_VC_003,         
   @VSDE_OBSE_CABE TD_VC_050,  
   @VSST_CHEQ_UNID TD_VC_001  
        
BEGIN TRAN SP_TCMOVI_BANC_I04  
        
 /** inserta en la cabecera de bancos **/        
   
 Select  @VSST_INTE_BACH = ST_INTE_BACH,        
 @VSTI_OPNI_CARG = CO_TIPO_OPEG,         
 @VSTI_OPNI_ABON = CO_TIPO_OPER,  
    @VSST_CHEQ_UNID = ST_CHEQ_UNID  
 From    TMPARA_TESO         
 Where   CO_EMPR = @ISCO_EMPR        
   
   
 If Rtrim(@ISCO_ENTR_REND) = ''        
  Select @ISCO_ENTR_REND = NULL        
   
 If @VSST_INTE_BACH = 'N' And  @ISST_ASTO_RESU = 'N' And          
  @ISCO_TIPO_OPER != @VSTI_OPNI_CARG And  @ISCO_TIPO_OPER != @VSTI_OPNI_ABON        
   
  Exec SP_TTULTI_ASTO_Q01 @ISCO_EMPR, @ISCO_USUA_MODI, @ISCO_UNID_CNTB, @ISCO_TIPO_OPER, @IDFE_OPER, @ISNU_COMP_BANC OUTPUT   
     
   
 Else        
 Begin        
  Select  @VNNU_REGI = Count(*)         
  From    TCMOVI_BANC      
  Where   CO_EMPR = @ISCO_EMPR         
  And  CO_UNID_CONC = @ISCO_UNID_CNTB  
  And  CO_BANC = @ISCO_BANC         
  And  NU_CNTA_BANC = @ISNU_CNTA_BANC         
  And  AA_BNCO = @ISAA_BNCO        
  And  MM_BNCO = @ISMM_BNCO         
  And  TI_MOVI_BANC = 'E'          
  And  NU_COMP_BANC = @ISNU_COMP_BANC        
    
  Select @VNCO_NUEV_NUME = Convert(Int , @ISNU_COMP_BANC)        
  Select @VNUL_CORR_AJUS = 0          
    
  If @VNNU_REGI > 0 Or Rtrim(IsNull(@ISNU_COMP_BANC, '')) = ''        
  Begin                 
   Select  @VSCO_NUEV_CHAR = IsNull(MAX(NU_COMP_BANC), '0')        
   From    TCMOVI_BANC         
   Where CO_EMPR = @ISCO_EMPR         
   And  CO_UNID_CONC = @ISCO_UNID_CNTB  
   And  CO_BANC = @ISCO_BANC         
   And  NU_CNTA_BANC = @ISNU_CNTA_BANC         
   And  AA_BNCO = @ISAA_BNCO        
   And  MM_BNCO = @ISMM_BNCO         
   And  TI_MOVI_BANC = 'E'          
   And  NU_COMP_BANC LIKE '000%'        
    
   Select @VNCO_NUEV_NUME = Convert(Int , @VSCO_NUEV_CHAR) + 1        
   Select @VSCO_NUEV_CHAR = Convert(Char(8) , @VNCO_NUEV_NUME)        
   
   -- RELLENA DE CEROS HASTA 8 CARACTERES         
   Select @VSCO_NUEV_CHAR = IsNull(REPLICATE('0',8- DATALENGTH(LTRIM(Rtrim(@VSCO_NUEV_CHAR)))),'') 
+LTRIM(Rtrim(@VSCO_NUEV_CHAR))        
     
   Select @ISNU_COMP_BANC = @VSCO_NUEV_CHAR         
   
   If @VNNU_REGI > 0        
   Select @VNUL_CORR_AJUS = 1         
   End        
   SELECT @VNUL_CORR_EGRE = @VNCO_NUEV_NUME         
   
  End        
   
  -- Asigna Observaciones como Desc del Tipo de Operacion  
  Select @VSDE_OBSE_CABE = Null        
   
  Select   @VSDE_OBSE_CABE = DE_TIPO_OPER        
  From     TTTIPO_OPER        
  Where    CO_EMPR = @ISCO_EMPR        
  And CO_TIPO_OPER = @ISCO_TIPO_OPER        
   
  Insert Into TCMOVI_BANC(        
  CO_EMPR, CO_BANC, NU_CNTA_BANC, AA_BNCO, MM_BNCO, TI_MOVI_BANC, NU_COMP_BANC,         
  FE_OPER, CO_TIPO_OPER, FA_TIPO_CAMB, IM_MOVI, CO_ENTR_REND, SI_SOLO_BANC, NU_CHEQ_USAD,         
  SI_OPER_CONC, ST_CONT, TI_SITU, CO_UNID_CONC, NU_SOLI, CO_SUBR, CO_TIPO_DOCU, NU_DOCU_BANC, NU_CHEQ,      
  FE_CHEQ, DE_OBSE, TI_ENTI, CO_ENTI, DE_NOMB_ORDE, ST_PAGO_DETR, CO_USUA_CREA, CO_USUA_MODI)        
  Values (        
  @ISCO_EMPR, @ISCO_BANC, @ISNU_CNTA_BANC, @ISAA_BNCO, @ISMM_BNCO, @ISTI_MOVI_BANC, @ISNU_COMP_BANC,         
  @IDFE_OPER, @ISCO_TIPO_OPER, @INFA_TIPO_CAMB, @INIM_MOVI, @ISCO_ENTR_REND, @ISSI_SOLO_BANC, NULL,         
  'N', 'N', 'ACT', @ISCO_UNID_CNTB, @ISNU_SOLI, @ISCO_SUBR, @ISCO_TIPO_DOCU , @ISNU_DOCU_BANC, @ISNU_CHEQ,        
  @IDFE_OPER, @VSDE_OBSE_CABE, @ISTI_ENTI, @ISCO_ENTI, @ISDE_NOMB_ORDE, @ISST_PAGO_DETR, @ISCO_USUA_MODI,     
  @ISCO_USUA_MODI)         
   
  If @@error <> 0        
  Begin        
   Rollback TRAN SP_TCMOVI_BANC_I04        
   Return        
  End        
   
  Exec SP_TTDOCU_CNTB_Q02 29, @OSTI_DOCU_CHEQ OUTPUT      
   
  IF @ISCO_TIPO_DOCU = @OSTI_DOCU_CHEQ      
  Begin      
   Update TTSTOC_CHEQ      
   Set    NU_ULTI_CHEQ = @ISNU_CHEQ, FE_ULTI_CHEQ = @IDFE_OPER,      
   FE_USUA_MODI = GETDATE(), CO_USUA_MODI = @ISCO_USUA_MODI      
   Where  CO_EMPR = @ISCO_EMPR        
   and    CO_BANC = @ISCO_BANC       
   and    NU_CNTA_BANC = @ISNU_CNTA_BANC       
         and   ('S' = @VSST_CHEQ_UNID   
            and CO_UNID_CONC = @ISCO_UNID_CNTB  
            Or 'N' = @VSST_CHEQ_UNID )  
   and    SI_CHEQ_ACTU = 'S'      
   
   If @@error <> 0      
   Begin      
    Rollback TRAN SP_TCMOVI_BANC_I04      
    Return      
   End      
  End      
   
  /* ActualizAnd o Estado y Fecha Liquidaci¸n Solicitud Caja */        
  Update  TMSOLI_CABA         
  Set     TI_SITU = 'LIQ',         
    FE_LIQU = @IDFE_OPER,        
    CO_USUA_MODI = @ISCO_USUA_MODI,         
    FE_USUA_MODI = Getdate()        
  Where   CO_EMPR = @ISCO_EMPR        
  And NU_SOLI = @ISNU_SOLI        
   
  If @@error <> 0        
  Begin        
   rollback TRAN SP_TCMOVI_BANC_I04        
   return        
  End          
   
  /* ----------- Actualiza los Correlativos ------------------ */        
  If @VSST_INTE_BACH = 'S' OR @ISST_ASTO_RESU = 'S' OR         
  @ISCO_TIPO_OPER = @VSTI_OPNI_CARG OR @ISCO_TIPO_OPER = @VSTI_OPNI_ABON        
  Begin            
   
   If @ISTI_CORR_INEG = 'N'        
   Begin        
    Select  @INUL_CORR_EGRE = UL_CORR_EGRE         
    From    TMSABA_MENS        
    Where   CO_EMPR = @ISCO_EMPR          
    And CO_BANC = @ISCO_BANC         
    And NU_CNTA_BANC = @ISNU_CNTA_BANC         
    And AA_BNCO = @ISAA_BNCO         
    And MM_BNCO = @ISMM_BNCO         
   
    Update   TMSABA_MENS        
    Set      UL_CORR_EGRE = @INUL_CORR_EGRE + 1 + @VNUL_CORR_AJUS,         
    CO_USUA_MODI = @ISCO_USUA_MODI,         
    FE_USUA_MODI = Getdate()        
    Where CO_EMPR = @ISCO_EMPR         
    And CO_BANC = @ISCO_BANC         
    And NU_CNTA_BANC = @ISNU_CNTA_BANC         
    And AA_BNCO = @ISAA_BNCO         
    And MM_BNCO = @ISMM_BNCO        
   
    If @@error <> 0        
    Begin        
     Rollback TRAN SP_TCMOVI_BANC_I04        
     Return        
    End        
   End        
   Else        
   Begin        
    Select  @INUL_CORR_INEG = UL_CORR_INEG         
    From    TMSABA_MENS        
    Where   CO_EMPR = @ISCO_EMPR          
    And  CO_BANC = @ISCO_BANC         
    And  NU_CNTA_BANC = @ISNU_CNTA_BANC         
    And  AA_BNCO = @ISAA_BNCO         
    And  MM_BNCO = @ISMM_BNCO         
      
    Update   TMSABA_MENS        
    Set    UL_CORR_INEG = @INUL_CORR_INEG + 1 + @VNUL_CORR_AJUS,         
    CO_USUA_MODI = @ISCO_USUA_MODI,         
    FE_USUA_MODI = GETDATE()        
    Where    CO_EMPR = @ISCO_EMPR         
    And  CO_BANC = @ISCO_BANC         
    And  NU_CNTA_BANC = @ISNU_CNTA_BANC         
    And  AA_BNCO = @ISAA_BNCO         
    And  MM_BNCO = @ISMM_BNCO        
      
    If @@error <> 0        
    Begin        
     Rollback TRAN SP_TCMOVI_BANC_I04        
     Return        
    End        
   End        
  End        
        
Commit TRAN SP_TCMOVI_BANC_I04  
        
SELECT @ISNU_COMP_BANC        
RETURN        
/*------------------------------------- Fin -------------------------------------*/


GO
